
import axios from "axios";
// 定义一个常量来保存统一的url
const  baseUrl = "http://localhost:8080";
/**
 * home组件中请求数据的对象
 * @type {{}}
 */
const projectRequest={
    /**
     * 加载所有的菜单,我们这里准备异步请求，需要一个回调函数
     * @param project 对象，用来封装查询条件
     * @param page 页码，默认是1
     * @param limit 每页大小，默认10
     * @param callBack 回调函数
     */
    loadProjects(project,page=1,limit=10,callBack){
        let url = baseUrl + "/project/list?page="+page + "&limit="+limit;
        console.log(project.projectName)
        if(project){
            if(project.userId){
                url += "&userId=" + project.userId;
            }
            if(project.projectName){
                url += "&projectName=" + project.projectName;
            }
            if(project.projectStatus){
                url += "&projectStatus=" + project.projectStatus;
            }
            if(project.startTimeBegin){
                url += "&startTimeBegin="+project.startTimeBegin;
            }
            if(project.startTimeEnd){
                url += "&startTimeEnd="+project.startTimeEnd;
            }
            if(project.endTimeBegin){
                url += "&endTimeBegin="+project.endTimeBegin;
            }
            if(project.endTimeEnd){
                url += "&endTimeEnd="+project.endTimeEnd;
            }
            if(project.projectStatus){
                url += "&projectStatus="+project.projectStatus;
            }
        }
        // 发送请求
        axios.get(url)
            .then(res=>{
                // 回调函数是从外面传入的，我们要将我们请求得到的结果传回到回调函数中.
                // 由于axiso会对结果进行一个封装，所以我们这里传入回调函数的数据直接就是res.data
                // 我们在外面获取的数据就是我们后端响应的数据本身。
                callBack(res.data);
            })
    },


    loadDeletes(project,page=1,limit=10,callBack){
        let url = baseUrl + "/project/deleteList?page="+page + "&limit="+limit;
        if(project){
            if(project.userId){
                url += "&userId=" + project.userId;
            }
            if(project.projectName){
                url += "&projectName=" + project.projectName;
            }
            if(project.projectStatus){
                url += "&projectStatus=" + project.projectStatus;
            }
            if(project.startTimeBegin){
                url += "&startTimeBegin="+project.startTimeBegin;
            }
            if(project.startTimeEnd){
                url += "&startTimeEnd="+project.startTimeEnd;
            }
            if(project.endTimeBegin){
                url += "&endTimeBegin="+project.endTimeBegin;
            }
            if(project.endTimeEnd){
                url += "&endTimeEnd="+project.endTimeEnd;
            }
            if(project.projectStatus){
                url += "&projectStatus="+project.projectStatus;
            }
        }
        // 发送请求
        axios.get(url)
            .then(res=>{
                // 回调函数是从外面传入的，我们要将我们请求得到的结果传回到回调函数中.
                // 由于axiso会对结果进行一个封装，所以我们这里传入回调函数的数据直接就是res.data
                // 我们在外面获取的数据就是我们后端响应的数据本身。
                callBack(res.data);
            })
    },

    saveProject(project,callBack){
        console.log(project)
        let url = baseUrl + "/project/save"
        axios.post(url,project)
            .then(res=>{
                callBack(res.data);
            })
    },


    selectProjectByIdList(projectId,callBack){
        let url=baseUrl + "/project/projectIdList?projectId=" + projectId;
        axios.get(url)
            .then(res=>{
                callBack(res.data);
            })
    },





    updateProjectById(project,callBack){
        let url=baseUrl + "/project/update";
        axios.put(url,project)
            .then(res=>{
                callBack(res.data);
            })
    },


    deleteProject(projectId,callBack){
        let url=baseUrl + "/project/delete?projectId=" + projectId;
        axios.put(url)
            .then(res=>{
                callBack(res.data);
            })
    },


    updateFile(projectId,callBack){
        let url = baseUrl + "/project/file?projectId=" + projectId;
        axios.put(url)
            .then(res=>{
                callBack(res.data);
            })
    },
    updateFileRestore(projectId,callBack){
        let url = baseUrl + "/project/fileRestore?projectId=" + projectId;
        axios.put(url)
            .then(res=>{
                callBack(res.data);
            })
    },


    releases(projectIds,callBack){
        let url;
        if (projectIds){
            projectIds.forEach(projectId=> url = baseUrl + "/project/releases");
        }
        axios.put(url,projectIds)
            .then(res =>{
                callBack(res.data);
            })
    },



    files(projectIds,callBack){
        let url;
        if (projectIds){
            projectIds.forEach(projectId=> url = baseUrl + "/project/files");
        }
        axios.put(url,projectIds)
            .then(res =>{
                callBack(res.data);
            })
    },

    deletes(projectIds,callBack){
        let url;
        if (projectIds){
            projectIds.forEach(projectId=> url = baseUrl + "/project/deletes");
        }
        axios.put(url,projectIds)
            .then(res =>{
                callBack(res.data);
            })
    },

    count(userId,callBack){
    let url = baseUrl + "/console/count?userId=" + userId;
    axios.get(url)
        .then(res =>{
            callBack(res.data);
        })
    },
    // saveProjects(project,callBack){
    //     let url = baseUrl + "/project/save";
    //     // 发送请求
    //     axios.put(url,project)
    //         .then(res=>{
    //             // 回调函数是从外面传入的，我们要将我们请求得到的结果传回到回调函数中.
    //             // 由于axiso会对结果进行一个封装，所以我们这里传入回调函数的数据直接就是res.data
    //             // 我们在外面获取的数据就是我们后端响应的数据本身。
    //             callBack(res.data);
    //         })
    // }







}
// 将projectRequest暴露出去
export default projectRequest;